"""
1、序列是指：内容连续、有序，可使用下标索引的一类数据容器
列表、元组、字符串均可以视为序列

2、序列的常用操作---切片
序列支持切片，即：列表、元组、字符串，均支持进行切片操作
切片：从一个序列中，取出一个子序列
注意：
1被切片的数据容器本身不变，而是得到了新的内容
2）列表的子序列格式是【】，元组是（），字符串就是紧挨着的

语法：
序列[起始坐标:结束坐标：步长]
1)起始坐标可以留空，表示从头开始
2）结束下表表示从何结束--取的末尾不包含结束下标。结束坐标可以留空，表示一直到尾部
3）步长
步长1表示，一个个取元素
步长2表示，每次跳过1个元素取
补偿N表示，没去跳过N-1个匀速取

4)注意可以多个切片同时写，比如
new_str = str[::-1][9:14] 表示先倒序，再取9：1:4
注意：步长为负，⬅️表示取得方向也是相反的从后往前前，那么起始坐标和结束坐标他俩反过来写反过来写，因为按照箭头嘛！你看我下面例子注意序列的起始坐标和结束坐标不是负数

比如：正常 my_list = [0,1,2,3,4,5,6]，
想取切片【1，4】就是 【1：5:1】
想取切片【4，1】就是 【4:0:-1】


注意：
字符串、元组、列表，如果对他操作后的结果返回值不是none，并且前一个操作的返回值是后一个操作能接收的类型，
那么可以进行链式调用”

s = "  万过薪月，nohtyP  "
# 链式操作：去空白→分割→取元素→替换→反转→转大写
result = s.strip().split("，")[1].replace("nohtyP", "Python")[::-1].upper()
print(result)  # 输出：NOHTYP（先去空白→分割取"nohtyP"→替换成"Python"→反转"nohtyP"→转大写）

注意：有倒序操作的，第一步就先倒序，然后在进行其他操作
"""

# 举例：
# 对ist进行切片，从1开始，4结束，步长1
my_list = [0,1,2,3,4,5,6]
my_list[1:4]    #步长默认1的时候可以省略不写
# 结果是[1,2,3]

# 对tuple进行训片，从头开始，到最后结束，步长1
my_tuple = (0,1,2,3,4,5,6)
my_tuple[:]     #起始和结束不写表示从头到尾，步长是1可以省略
# 结果是(0,1,2,3,4,5,6)

# 对str进行切片，从头开始，到最后结束，步长2
my_str = "0123456"
my_str[::2]

# 结果是0246

# 对str进行切片，从头开始，到最后结束，步长-1
my_str = "0123456"
my_str[::-1]   # 结果是643210

# 对列表进行切片，从5开始，到1结束，步长-2
my_list = [0,1,2,3,4,5,6]
my_str[5:1:-2]
结果是【5,3】
